package logica.mundo;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.util.logging.Level;
import java.util.logging.Logger;
import logica.interfaces.Dibujable;

/**
 *
 * @author JorgeIvan
 */

//Comentario mio homez no moleste
public class SimuladorTerremoto implements Dibujable, Runnable{

    private int grado,velocidad;
    private Edificio edificio;
    private Dimension Lim;

    public SimuladorTerremoto(Dimension lim) {
        
        this.edificio=new Edificio(new Point(0, 0),lim,500);
        this.Lim=lim;
        this.grado = 0;
        this.velocidad=150;
    }

    public Edificio getEdificio() {
        return edificio;
    }

    public void setEdificio(Edificio edificio) {
        this.edificio = edificio;
    }

    public int getGrado() {
        return grado;
    }

    public void setGrado(int grado) {
        this.grado = grado;
    }

    public Dimension getLim() {
        return Lim;
    }

    public void setLim(Dimension Lim) {
        this.Lim = Lim;
    }

    public int getVelocidad() {
        return velocidad;
    }

    public void setVelocidad(int velocidad) {
        this.velocidad = velocidad;
    }
    
    private void moverEdificio()
    {
        try
            {
                getEdificio().setPunto(new Point(getEdificio().getPunto().x+getGrado(), getEdificio().getPunto().y));
            for (Bloque bloque : getEdificio().getBloques()) {
                bloque.setPunto(new Punto(bloque.getPunto().x + getGrado(), bloque.getPunto().y));
            }    
                Thread.sleep(getVelocidad());
                getEdificio().setPunto(new Point(getEdificio().getPunto().x-getGrado(), getEdificio().getPunto().y));
                 for (Bloque bloque : getEdificio().getBloques()) {
                bloque.setPunto(new Punto(bloque.getPunto().x - getGrado(), bloque.getPunto().y));
            }
                Thread.sleep(getVelocidad());
                getEdificio().setPunto(new Point(getEdificio().getPunto().x-getGrado(), getEdificio().getPunto().y));
                 for (Bloque bloque : getEdificio().getBloques()) {
                bloque.setPunto(new Punto(bloque.getPunto().x - getGrado(), bloque.getPunto().y));
            }
                Thread.sleep(getVelocidad());
                getEdificio().setPunto(new Point(getEdificio().getPunto().x+getGrado(), getEdificio().getPunto().y));
                 for (Bloque bloque : getEdificio().getBloques()) {
                bloque.setPunto(new Punto(bloque.getPunto().x + getGrado(), bloque.getPunto().y));
            }
                Thread.sleep(getVelocidad());
                getEdificio().setResistencia(getEdificio().getResistencia()-getGrado());
            } catch (InterruptedException ex) {
                Logger.getLogger(SimuladorTerremoto.class.getName()).log(Level.SEVERE, null, ex);
            }
    }

    @Override
    public void dibujar(Graphics g) {
        
        edificio.dibujar(g);
        for (int i = 0; i < edificio.getBloques().length; i++) {
            edificio.getBloques()[i].dibujar(g);
        }
    }

    @Override
    public void run() {
        
        while(true)
        {
            moverEdificio();
        }
    }
    
    
    
    
}
